/**
 * 统一响应中间件
 * 为Express的Response对象添加标准化的响应方法
 */
function responseMiddleware(req, res, next) {
  // 成功响应
  res.success = function(data = null, message = '请求成功', code = 200) {
    return this.status(code).json({
      code,
      success: true,
      message,
      data
    });
  };

  // 错误响应
  res.fail = function(message = '请求失败', code = 400, data = null) {
    return this.status(code).json({
      code,
      success: false,
      message,
      data
    });
  };

  // 分页响应
  res.page = function(data, total, page, limit) {
    return this.status(200).json({
      code: 200,
      success: true,
      message: '查询成功',
      data,
      pagination: {
        total,
        page,
        limit,
        pages: Math.ceil(total / limit)
      }
    });
  };

  // 未授权响应
  res.unauthorized = function(message = '未授权，请先登录') {
    return this.status(401).json({
      code: 401,
      success: false,
      message,
      data: null
    });
  };

  // 禁止访问响应
  res.forbidden = function(message = '无权限访问该资源') {
    return this.status(403).json({
      code: 403,
      success: false,
      message,
      data: null
    });
  };

  // 资源不存在响应
  res.notFound = function(message = '请求的资源不存在') {
    return this.status(404).json({
      code: 404,
      success: false,
      message,
      data: null
    });
  };

  // 服务器错误响应
  res.serverError = function(message = '服务器内部错误') {
    return this.status(500).json({
      code: 500,
      success: false,
      message,
      data: null
    });
  };

  next();
}
// 修改为ES模块导出
export default responseMiddleware;